package net.towee.model.account;

import java.util.List;

import com.google.gwt.user.client.rpc.IsSerializable;

/**
 * This object contains set of boards of some user. Consists of
 * some get and set methods and list of minimized widgets.
 * @author c58
 */
public interface BoardsContainer extends IsSerializable  {
	/**
	 * @return list of boards
	 */
	List<Board> getBoardsList();
	
	/**
	 * Add new board to container
	 * @param board
	 */
	void addBoard(Board board);
	
	/**
	 * Remove board with some index
	 * @param index
	 */
	void removeBoard(String boardId);
	
	/**
	 * Remove board by object
	 * @param board
	 */
	void removeBoard(Board board);
	
	/**
	 * Get board by id
	 * @param boardId
	 */
	Board getBoard(String boardId);
	
	/**
	 * Get board by index
	 * @param boardId
	 */
	Board getBoard(int index);
	
	/**
	 * Return board index
	 * @param board
	 * @return
	 */
	int getBoardIndex(Board board);
	
	/**
	 * @return true if container has some board
	 */
	boolean hasBoard(Board board);
	
	/**
	 * @return List of IDs of minimized widgets
	 */
	List<Gadget> getMinimizedGadgets();
}
